﻿using MicroAmoy.Application.Code;
using System;
using System.Text;
using System.Web.Mvc;
namespace MicroAmoy.Application.Web
{
    /// <summary>
    /// 微信网页基础控制器
    /// 处理相关操作
    /// </summary>
    [OAuth(LoginMode.Ignore)]
    public abstract class WeChatControllerBase : ControllerBase
    {
        //
        // 摘要: 
        //     当操作中发生未经处理的异常时调用。
        //
        // 参数: 
        //   filterContext:
        //     有关当前请求和操作的信息。
        protected override void OnException(ExceptionContext filterContext)
        {
            Exception exception = GerInnerException(filterContext.Exception);
            string message = exception.Message;
            base.OnException(filterContext);
            string str = filterContext.RouteData.Values["controller"].ToString();
            string str1 = filterContext.RouteData.Values["action"].ToString();
            object item = filterContext.RouteData.DataTokens["area"];
            StringBuilder sb = new StringBuilder();
            sb.AppendFormat("页面未捕获的异常：Area:{0},Controller:{1},Action:{2}", item, str, str1);
            sb.Append(exception);
            Logger.Error(sb.ToString());
        }
        private Exception GerInnerException(Exception ex)
        {
            if (ex.InnerException == null)
            {
                return ex;
            }
            return GerInnerException(ex.InnerException);
        }

        protected WechatOperator WechatUser
        {
            get
            {
                return WechatProvider.Provider.Current();
            }
        }
    }
}